﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using WBGModel;
using WBGBusiness;
using RecursosHumanos;

namespace Clinica
{
    public partial class frmConsulta3C_ : Form
    {
        Request request;
        ModelConsulta consulta = new ModelConsulta();

        public frmConsulta3C_(Request req, int id)
        {
            consulta.idConsulta = id;
            request = req;
            InitializeComponent();
        }

        private void frmPessoa_Load(object sender, EventArgs e)
        {
            try
            {
                if (request == Request.Inserir)
                {
                    PreparaInsert();
                }
                else
                {
                    CarregaCampos();
                }
            }
            catch (Exception ex)
            {
                
            }            
        }

        private void PreparaInsert()
        {

        }

        private void CarregaCampos()
        {
            consulta = new BusConsulta().Listar("Consulta.idConsulta = " + consulta.idConsulta.ToString())[0];
            txtID.Text = consulta.idConsulta.ToString();
            txtPaciente.Text = new BusPaciente().Listar("Paciente.idPaciente = " + consulta.idPaciente.ToString())[0].Nome;
            txtInicioPrevisto.Text = consulta.inicioPrevisto.Value.ToString("dd/MM/yyyy HH:mm");
            txtFimPrevisto.Text = consulta.fimPrevisto.Value.ToString("dd/MM/yyyy HH:mm");
            txtInicio.Text = consulta.inicio.Value.ToString("dd/MM/yyyy HH:mm");
            txtFim.Text = consulta.fim.Value.ToString("dd/MM/yyyy HH:mm");
        }

        private void CarregaRegistro()
        {
            try
            {
                DateTime tmp = new DateTime();
                if (DateTime.TryParse(txtInicioPrevisto.Text, out tmp))
                    consulta.inicioPrevisto = tmp;
                else
                    consulta.inicioPrevisto = null;

                if (DateTime.TryParse(txtFimPrevisto.Text, out tmp))
                    consulta.fimPrevisto = tmp;
                else
                    consulta.fimPrevisto = null;

                if (DateTime.TryParse(txtInicio.Text, out tmp))
                    consulta.inicio = tmp;
                else
                    consulta.inicio = null;

                if (DateTime.TryParse(txtFim.Text, out tmp))
                    consulta.fim = tmp;
                else
                    consulta.fim = null;
            }
            catch (Exception ex)
            {
                throw new Exception("Há dados inválidos.");
            }
        }

        private void frmLocacao__KeyUp(object sender, KeyEventArgs e)
        {
            switch(e.KeyData)
            {
                case Keys.Escape:
                    this.Close();
                    break;
                case Keys.F5:
                    try
                    {
                        CarregaRegistro();
                        if (request == Request.Inserir)
                        {
                            new BusConsulta().Inserir(consulta);
                        }
                        else
                        {
                            new BusConsulta().Alterar(consulta);
                        }
                        MessageBox.Show("Registro gravado com sucesso.", "Concluído", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        this.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.InnerException.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    break;
            }
        }

        private void btnSelCopia_Click(object sender, EventArgs e)
        {
            txtPaciente_KeyPress(sender, new KeyPressEventArgs('\r'));
        }

        private void txtPaciente_KeyPress(object sender, KeyPressEventArgs e)
        {
            try
            {
                if (e.KeyChar == '\r') //Enter
                {
                    var lst = (from x in new BusPaciente().Listar()
                               orderby x.Nome
                               select new { ID = x.idPaciente, Filme = x.Nome }).ToList();
                    var frm = new frmSelecao3C(lst);
                    frm.ShowDialog();
                    if (frm.selecionado == true)
                    {
                        consulta.idPaciente = frm.id;
                        txtPaciente.Text = frm.rotulo;
                    }
                }
            }
            catch (Exception ex)
            {

            }
        }
    }
}
